package StringClass;


import java.util.Scanner;

class TestBuffer {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append('1');
        stringBuffer.append("asd");

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("asd");
    }
}

class TestBuilder {

}


public class  Test2 {
    public static void main(String[] args) {
        String s1 = "hello";     // "hello" 是常量，不能修改
        String s2 = new String("hello");
        String s3 = "hello";
        System.out.println(s1 == s3);

        // s1[1] = 'c';
        // s2[1] = 'c';   这都是错的，因为String是不可变的

        /*原因：
        * 1. 方便实现字符串对象池，如果String可变，那么对象池就要考虑写时拷贝
        * 2. 不可变对象是线程安全的
        * 3. 不可变对象更方便缓存 hash code，作为 key 时可以更加高效地保存在 HashMap中
        * */

    }
}
